﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using FileManager_Server.ServiceModel.Client_Update_Model.Client_Update_DataTransfer_Model;
using FileManager_Server.ServiceModel.DataTransfer_Model;
using FileManager_Server.ServiceModel.WCF_Args_Model;

namespace FileManager_Server.BusinessLogic.WCF
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IFileManager_UserService" in both code and config file together.
    [ServiceContract]
    public interface IFileManager_UserService
    {
        [OperationContract]
        UserLoginResult Login(UserLoginArgs userLoginArgs);

        [OperationContract]
        FolderResultCollection GetDepartmentFolder();

        [OperationContract]
        CompanyResultCollection GetCompanyCollection();

        [OperationContract]
        FolderRoleResultCollection GetFolderRoleCollection(FolderRoleQueryArgs folderRoleQueryArgs);

        [OperationContract]
        FileResultCollection GetFolderFileCollection(FileQueryArgs fileQueryArgs);

        [OperationContract]
        FileDeleteResult DeleteFileService(FileDeleteArgs fileDeleteArgs);

        [OperationContract]
        FolderDeleteResult DeleteFolderService(FolderDeleteArgs folderDeleteArgs);

        [OperationContract]
        FileReNameResult ChangeFileNameService(FileReNameArgs fileReNameArgs);

        [OperationContract]
        FolderReNameResult ChangeFolderNameService(FolderReNameArgs folderReNameArgs);

        [OperationContract]
        FileCopyToResult CopyFileToOtherFolder(FileCopyToArgs fileCopyToArgs);

        [OperationContract]
        FileCutToResult CutFileToOtherFolder(FileCutToArgs fileCutToArgs);

        [OperationContract]
        FolderCopyToResult CopyFolderToOtherFolder(FolderCopyToArgs folderCopyToArgs);

        [OperationContract]
        FolderCutToResult CutFolderToOtherFolder(FolderCutToArgs folderCutToArgs);

        [OperationContract]
        NewFolderResult CreateNewFolder(NewFolderArgs newFolderArgs);

        [OperationContract]
        UserResultCollection SearchUserByName(SearchUserNameArgs searchUserNameArgs);

        [OperationContract]
        CompanGroupAndUserGroupResultCollection GetCompanyGroupAndUserGroupCollection();

        [OperationContract]
        UserResultCollection SearchUserByCompanyCode(SearchUserByCompanyCodeArgs searchUserByCompanyCodeArgs);

        [OperationContract]
        FileRoleAddResultCollection GetFolderRole(FileRoleAddArgs fileRoleAddArgs);

        [OperationContract]
        FileRoleAddResultCollection GetFolderRoleDelegate(FileRoleAddDDelegateArgs fileRoleAddDDelegateArgs);

        [OperationContract]
        NewFileRoleResultCollection NewFileRole(NewFileRoleCollectionArgs newFileRoleCollectionArgs);

        [OperationContract]
        FileRoleChangeResult ChangeFileRole(FileRoleChangeArgs fileRoleChangeArgs);

        [OperationContract]
        ApplySubFolderRoleResult ApplySubFolderRole(ApplySubFolderRoleArgs applySubFolderRoleArgs);

        [OperationContract]
        DeleteFileRoleResult DeleteFileRole(DeleteFileRoleArgs deleteFileRoleArgs);

        [OperationContract]
        FileLogQueryCountResult GetFileLogCount(FileLogQueryArgs fileLogQueryArgs);

        [OperationContract]
        FileLogResultCollection GetFileLog(FilelogQueryPageArgs filelogQueryPageArgs);

        [OperationContract]
        FileResultCollection SearchFile(FileSearchArgs fileSearchArgs);

        [OperationContract]
        CheckFileResult CheckFile(CheckFileUploadingArgs checkFileUploadingArgs);

        [OperationContract]
        void DeleteUploadingFile(DeleteUploadingFileArgs deleteUploadingFileArgs);

        [OperationContract]
        DownloadingCheckFileResultCollection CheckFileInfomation(DownlaodingCheckFilesArgs downlaodingCheckFilesArgs);

        [OperationContract]
        void DownloadingFileSuccess(DownloadingSuccessArgs downloadingSuccessArgs);

        [OperationContract]
        DepartmentSizeResultCollection GetDepartmentSizeCollection();

        [OperationContract]
        int GetDepartmentSizeMB(string departmentId);

        [OperationContract]
        UpdateFileInfo CheckClientUpdateInfo();
    }
}
